import axios from 'axios'

// 获取环境变量
const service = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL, // url = base url + request url
  // withCredentials: true, // 跨域请求时发送 cookies
  timeout: 5000, // 请求超时
});

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 一般会请求拦截里面加token，用于后端的验证
    // if (token) {
    //   config.headers.token = token
    // }
    return config
  },
  (err) => {
    // 请求错误，这里可以用全局提示框进行提示
    return Promise.reject(err)
  }
);

// 响应拦截器
service.interceptors.response.use(
  (res) => {
    // 直接返回 res，当然你也可以只返回 res.data
    // 系统如果有自定义 code 也可以在这里处理
    if (res.data.code !== 20000 && res.data.code !== 200) {
      // 全局提示
    }
    return res.data
  },
  (err) => {
    // 这里用来处理http常见错误，进行全局提示
    let message = ''
    switch (err.response?.status) {
      case 400:
        message = '请求错误(400)'
        break
    }
    // 这里错误消息可以使用全局弹框展示出来
    // 全局提示
    // 这里是AxiosError类型，所以一般我们只reject我们需要的响应即可
    return Promise.reject(err.response)
  }
)

export default service